Users often utilize a personal computer or other device to access a desktop environment, which traditionally provides a graphical user interface (GUI) including multiple icons, windows, toolbars, applications and documents. In some cases, the desktop is provided by the operating system, such as Microsoft Windows running locally on the user's personal computer. In other scenarios, such as in the case of virtual desktops, the desktop is running on a remote server, where the user's device is able to access the desktop over a network connection. In virtual desktop environments, the main logic and processing occur on the server and only the display information and user entry commands are communicated between the server and the user's device.
In desktop environments, a user working on their desktop may perform a number of actions, such as launching applications; visiting multiple websites and keeping them open in several tabs; opening documents and scrolling through those documents while making modifications; arranging application windows in a particular way; and the like. All these user actions result in a desktop state accumulated during the login session. Often, the user's login session needs to be terminated and the user may have to log back in either immediately or at a later time. In either case, the desktop state that the user had accumulated is lost, i.e., application windows, browser tabs and documents have been closed, window arrangements have been lost, etc. This results in a loss of productivity for the user since the user needs to manually restore the previous session.
There exist some tools that attempt to address a situation that occurs after a system reboot, which is sometimes required after making a modification to the operating system. For example, certain operating systems provide restart management application programming interfaces (APIs) which allow applications to be re-opened after a restart of the OS. Microsoft provides one such mechanism called “Restart Manager” API for the Windows OS that enables an application to be re-launched with certain parameters after a system restart takes place. However, this mechanism generally requires cooperation from software vendors in changing the code of their applications to support this API. In many cases, this is inconvenient and in fact not many vendors have implemented support for this API, which limits the applicability of this solution. There are also a number of other tools for re-opening applications, however such tools are limited various ways and presently there exists no comprehensive solution that is efficient, easy to use and which addresses all aspects of restoring desktop state between login sessions.